package com.ledong.designPatten.proxy.statics;

public class ProxyTest { // 劳工使用方
    public static void main(String[] args) {
        Job job = new Proxy(new Worker()); // 劳工使用方找到代理，让它进行code的工作
        job.code();
    }
}

interface Job {
    public void code();
}

class Proxy implements Job { // 代理声称可以code
    private Worker wrk;

    public Proxy(Worker wrk) {
        this.wrk = wrk;
    }

    public void code() {
        // 代理把工作交给worker之前，可以进行使用者是否合法
        System.out.println("Check the permission");
        wrk.code();
        // worker做完以后，代理还可以做更多的工作
        System.out.println("Get the saraly");
    }
}

// Worker实际做code的工作，但是使用者不能直接找到他，
// 而要通过代理
class Worker implements Job {
    public void code() {
        System.out.println("Worker code actually");
    }

}